import base64
import hashlib
import random
import string


class UserService():
    @staticmethod
    def genPwd(pwd,salt): #salt： cF3JfH5FJfQ8B2Ba   pwd:123456
        #base64加密
        pwd_base64 = base64.encodebytes(pwd.encode("utf-8"))
        str = f"{pwd_base64}-{salt}"
        #md5加密
        m = hashlib.md5()
        m.update(str.encode("utf-8"))
        #返回的是32位的16机制数
        return m.hexdigest()

    @staticmethod
    def genAuthCode(user_info):
        """根据用户实例对象生成密钥"""
        str = f"{user_info.uid}-{user_info.login_name}-{user_info.login_pwd}-{user_info.login_salt}"
        # md5加密
        m = hashlib.md5()
        m.update(str.encode("utf-8"))
        return m.hexdigest()

    @staticmethod
    def genSalt(length=16):
        """生成 加盐码"""
        selectString = string.ascii_letters + string.digits  # 所有的数字和字母
        # 随机生成16个数字或者字母的组合
        key_list = [random.choice(selectString) for i in range(length)]
        return "".join(key_list)